|
Real Time Messaging Protocol (RTMP) とは、Adobe が開発している、Adobe Flash プレーヤーとサーバーの間で、音声・動画・データをやりとりするストリーミングのプロトコル。元々は Macromedia が開発していて、Adobe に買収された。プロトコルの仕様は公開されている〔Real-Time Messaging Protocol (RTMP) specification | Adobe Developer Connection 〕。 RTMP プロトコルは多数の変種がある。 # RTMP (素のプロトコル) - TCP 上で動き、デフォルトのポート番号は1935 # RTMPS - HTTPS を使い、SSL で暗号化されたプロトコル # RTMPE - ディフィー・ヘルマン鍵共有に基づき暗号化されたRTMP。設計に欠陥があり、中間者攻撃が可能という脆弱性が存在する〔Ripping Media Off of the Wire A Step-by-Step Guide P.40 DEF CON 2010年〕〔ため、RTMPSを使う方が望ましい〔What is RTMPE Wowza Media Systems〕。 # RTMPT - HTTP で包んだ物。RTMP, RTMPS, RTMPE を含めることができる。 # pRTMP - Primetime DRMのかかったRTMP。 RTMP の主要な利用法は Flash Video を再生することだが、Adobe LiveCycle Data Services ES など、他のアプリケーションにも使用されている。 == 概要 == RTMP (RTMFP を除く) は TCP 上のプロトコルで、持続的接続を使い、(HTTPとの比較で)低レイテンシ通信を実現する。ストリームをスムーズに配信し、できるだけ多くの情報を送れるようにするために、ストリームをフラグメントに分割し、そのサイズはクライアントとサーバーの間で動的に交渉する。デフォルトのフラグメントサイズは音声は64バイト、動画とその他のデータタイプは128バイトである。複数のストリームのフラグメントは、インターリーブされ、単一の接続上に多重化される。データチャンクが十分大きく、フラグメントのヘッダーは1バイトしかないので、オーバーヘッドは小さい。しかしながら、実際は、個々のフラグメントは典型的にはインターリーブされない。代わりに、インターリーブと多重化はパケットレベルで行われ、複数のアクティブなチャンネルが、それぞれの帯域、レイテンシ、Quality of Service が要求を満たすように RTMP パケットが作られる。このようにパケットがインタリーブされるときは、独立に扱われ、フラグメントレベルではインタリーブされない。 RTMP は複数のチャンネルを定義していて、それの上でパケットが送受信され、それぞれは独立に動く。例えば、RPC リクエストとレスポンスを扱うチャンネル、動画ストリームを扱うチャンネル、オーディオストリームを扱うチャンネル、帯域外コントロールメッセージ (フラグメントサイズ交渉など) を扱うチャンネルなどがある。典型的な RTMP のセッションの間では、複数のチャンネルは同時にアクティブになる。RTMP データがエンコードされるとき、パケットヘッダーが生成される。パケットヘッダーは、送信するチャンネルのID、必要なら生成された時刻のタイムスタンプ、パケットペイロードの大きさなどを含む。このヘッダーの後に、実際のペイロード内容が続く。これは、現在のフラグメントサイズに基づき送信される前に分割される。パケットヘッダー自身は決して分割されることはなく、パケットの最初のフラグメントのデータのサイズに含まれない。別の言い方をすると、実際のパケットペイロード(メディアデータ)だけが、分割の対象となる。 より上のレイヤーでは、RTMP は MP3 や AAC や Flash Video を含み、Action Message Format を使いリモートプロシージャコールができる。全てのリモートプロシージャコールサービスは非同期で扱われ、単一のクライアントサーバーリクエストレスポンスモデルが使われ、リアルタイム通信は必要とされない。 抄文引用元・出典: フリー百科事典『 ウィキペディア(Wikipedia)』 ■ウィキペディアで「Real Time Messaging Protocol」の詳細全文を読む スポンサード リンク
|